home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / source / lib / powerd_lib.lha / PowerD_PPC / EStringF.ass < prev    next >
Text File  |  2002-03-23  |  831b  |  54 lines

  1.  
  2. # EStringF(dst:r3:PTR TO CHAR,textfmt:r4:PTR TO CHAR,args:r5=0:PTR TO ULONG)
  3.  
  4.     .text
  5.     .global    _EStringF
  6.     .global    _VEStringF
  7.  
  8. _VEStringF:
  9. _EStringF:
  10.     mflr    r0
  11.     stw    r0,8(r1)
  12.     stwu    r1,-32(r1)
  13.     stw    r3,24(r1)
  14.     li    r0,0
  15.     sth    r0,-2(r3)
  16.                 # r4 and r5 are set
  17. #    li    r6,0        # copy all characters
  18.     bl    .skip
  19. .copy:
  20.     lhz    r5,-4(r3)
  21.     lhz    r6,-2(r3)
  22.     cmpw    r5,r6
  23.     bgt    .addchar
  24.     mr    r6,r4
  25.     subi    r4,r4,1
  26.     li    r0,0
  27.     stbx    r0,r4,r3
  28.     b    .finish
  29. .addchar:    mr    r5,r6
  30.     stbx    r4,r5,r3
  31.     addi    r5,r5,1
  32.     sth    r5,-2(r3)
  33. .finish:    blr
  34.  
  35. .skip:    mflr    r6        # get the address of the copy procedure
  36.     mr    r7,r3
  37.     lwz    r3,_PowerPCBase(r2)
  38.     lwz    r0,-840+2(r3)    # RawDoFmtPPC
  39.     mtlr    r0
  40.     blrl
  41.  
  42.     lwz    r3,24(r1)
  43.     addi    r1,r1,32
  44.     lwz    r0,8(r1)
  45.     mtlr    r0
  46.     blr
  47.  
  48.     .type    _EStringF,@function
  49.     .size    _EStringF,$-_EStringF
  50.     .type    _VEStringF,@function
  51.     .size    _VEStringF,$-_VEStringF
  52.  
  53.     .extern    _PowerPCBase
  54.